import Picker from '../picker.vue';
import TimePickerPanel from '../panel/Time/time.vue';
import RangeTimePickerPanel from '../panel/Time/time-range.vue';
import Options from '../time-mixins';

import {findComponentsDownward, oneOf} from '../../../utils/assist';

export default {
  mixins: [
    Picker, Options
  ],
  components: {
    TimePickerPanel,
    RangeTimePickerPanel
  },
  props: {
    type: {
      validator(value) {
        return oneOf(value, ['time', 'timerange']);
      },
      default: 'time'
    }
  },
  computed: {
    panel() {
      const isRange = this.type === 'timerange';
      return isRange ? 'RangeTimePickerPanel' : 'TimePickerPanel';
    },
    ownPickerProps() {
      return {disabledHours: this.disabledHours, disabledMinutes: this.disabledMinutes, disabledSeconds: this.disabledSeconds, hideDisabledOptions: this.hideDisabledOptions};
    }
  },
  watch: {
    visible(visible) {
      if (visible) {
        this.$nextTick(() => {
          const spinners = findComponentsDownward(this, 'TimeSpinner');
          spinners.forEach(instance => instance.updateScroll());
        });
      }
    }
  }
};
